package com.example.demo.web;

import com.example.demo.pojo.Student;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;

import javax.servlet.http.HttpServletRequest;
import java.util.List;

@RestController
@RequestMapping("/param")
public class RequestParamController {

    @RequestMapping("/request")
    // 该方法的参数里可以直接使用请求对象
    // 可以获得请求的参数、方法、地址、请求头的信息
    public String test1(HttpServletRequest request){
        // 获取请求里的相关信息
        // 输出URI：统一资源标志符
        System.out.println(request.getRequestURI());
        // 输出URL：统一资源定位符
        System.out.println(request.getRequestURL());
        // 获取参数
        String name = request.getParameter("name");
        System.out.println("name = " + name);
        return null;
    }

    // 可以直接在参数里读取请求里的数据，不需要借助request对象
    @RequestMapping("/simple")
    // @RequestParam 用来指定前台的参数名字，将前台参数和后台方法形参一一对应
    public String test2(@RequestParam("username") String name, Integer age){
        System.out.println("name = " + name);
        System.out.println("age = " + age);
        return null;
    }
    // 如果参数为一个对象
    // 要求前台的参数名字要和对象里的属性名字一一对应
    @RequestMapping("/pojo")
    public String test3(Student student){
        System.out.println("student = " + student);
        return null;
    }

    // 如果参数是一个集合
    @RequestMapping("/list")
    public String test4(@RequestParam List<String> hobby){
        System.out.println("hobby = " + hobby);
        return "ok";
    }

    // 复杂pojo，对象里面嵌入对象
    // 比如：Student类型里维护一个Address类型

    // 数组类型：和集合类型有点像

}
